﻿using Datos.Repositories;
using Entidad;
using Servicios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace RealGestion_Web.Controllers
{
    public class ProductoController : Controller
    {
        //
        // GET: /Producto/

        public ActionResult Index()
        {
            ProductoServices productoSvc = new ProductoServices(new ProductoRepository());
            IList<Producto> datos = productoSvc.FindAll();

            return View(datos);
        }

        [HttpGet]
        public ActionResult Crear()
        {
            CategoriaServices categoriaSvc = new CategoriaServices(new CategoriaRepository());
            ViewData["categorias"] = new SelectList(categoriaSvc.FindAll(), "Id", "Denominacion");

            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            ViewData["proveedores"] = new SelectList(proveedorSvc.FindAll(), "Id", "NombreFantasia");

            MarcaServices marcaSvc = new MarcaServices(new MarcaRepository());
            ViewData["marcas"] = new SelectList(marcaSvc.FindAll(), "Id", "Denominacion");

            EstadoServices estadoSvc = new EstadoServices(new EstadoRepository());
            ViewData["estados"] = new SelectList(estadoSvc.FindAll(), "Id", "Denominacion");

            return View();
        }

        [HttpPost]
        public ActionResult Crear(Producto producto)
        {
            ProductoServices productoSvc = new ProductoServices(new ProductoRepository());
            int resultado = productoSvc.Add(producto);

            return RedirectToAction("Index");
        }


        public ActionResult FindById(int id)
        {
            CategoriaServices categoriaSvc = new CategoriaServices(new CategoriaRepository());
            ViewData["categorias"] = new SelectList(categoriaSvc.FindAll(), "Id", "Denominacion");

            ProveedorServices proveedorSvc = new ProveedorServices(new ProveedorRepository());
            ViewData["proveedores"] = new SelectList(proveedorSvc.FindAll(), "Id", "NombreFantasia");

            MarcaServices marcaSvc = new MarcaServices(new MarcaRepository());
            ViewData["marcas"] = new SelectList(marcaSvc.FindAll(), "Id", "Denominacion");

            EstadoServices estadoSvc = new EstadoServices(new EstadoRepository());
            ViewData["estados"] = new SelectList(estadoSvc.FindAll(), "Id", "Denominacion");

            ProductoServices productoSvc = new ProductoServices(new ProductoRepository());
            Producto producto = productoSvc.FindById(id);

            return View("Modificar", producto);
        }


        [HttpPost]
        public ActionResult Modificar(Producto producto)
        {

            ProductoServices productoSvc = new ProductoServices(new ProductoRepository());
            int resultado = productoSvc.Modify(producto);

            return RedirectToAction("Index");
        }


        public ActionResult Eliminar(int id)
        {
            ProductoServices productoSvc = new ProductoServices(new ProductoRepository());
            bool resultado = productoSvc.Remove(id);

            return RedirectToAction("Index");
        }

    }
}
